$(function () {
    let date = new Date();
    $('#registerTime').val(date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds());//登记时间
    $("#successDiv").hide();
    $.ajax({
        type: 'POST',
        url: '/userShow.action',
        contentType: 'application/json;charset=utf-8',
        success: function (result) {
            $("#currentAdmin").val(result.loginId)
        }
    })
    $.ajax({
        type: 'POST',
        async: false,
        url: '/hj/queryWarehouseRegistration.action',
        contentType: 'application/json;charset=utf-8',
        success: function (result) {
            productList = result.data;
            $.each(productList, function (i, v) {
                let tr = $("<tr></tr>")
                    .append("<td><div class=\"form-check custom-checkbox mb-3 checkbox-success check-lg\"><input type=\"checkbox\" value='" + v.id + "' class=\"form-check-input productClass\"></div></td>")
                    .append("<td>" + v.productId + "</td>")
                    .append("<td>" + v.productName + "</td>")
                    .append("<td>" + (v.type == 'Y001-1' ? '商品' : '产品') + "</td>")
                    .append("<td>" + v.amountUnit + "</td>")
                    .append("<td>" + v.costPrice + "</td>")
                    .append("<td style='display: none'>" + v.productDescribe +"</td>");
                $("#tbodyCommodity").append(tr);
            })
            jQuery.getScript("../static/js/datatables.init.js")
            checkingQuantity()
        }
    })
})
let productList;

function checkingQuantity() {
    let length = $("#tbody tr").length;
    if (length > 0) {
        $("#preview").attr("disabled", false)
    } else {
        $("#preview").attr("disabled", true)
    }
}

$("#preview").click(function () {
    $("#successDiv").show();
    $("#previewDiv").hide();
    $("input").attr("disabled", true);
    $(".deleteCurrentProduct").attr("disabled", true);
    $("#comment").attr("disabled", true);
    let input = $("input[type=number]");
    let total=0;
    let sum=0;
    $.each(input, function (i, v) {
        let cost = parseInt($(v).parent().next().next().text());
        let quantity = $(v).val();
        cost = cost * quantity;
        $(v).parent().next().next().next().text(cost);
        total=total+parseInt(quantity);
        sum=sum+parseInt($(v).parent().next().next().next().text());
    })
    $('#total').val(total);
    $('#sum').val(sum);
})

$("#cancelPreview").click(function () {
    $("#successDiv").hide()
    $("#previewDiv").show()
    $("input").attr("disabled", false);
    $(".deleteCurrentProduct").attr("disabled", false);
    $("#comment").attr("disabled", false);
})

// function checkingQuantity() {
//     let length = $("#tbody tr").length;
//     if (length > 0) {
//         $("#submitButton").attr("disabled", false)
//     } else {
//         $("#submitButton").attr("disabled", true)
//     }
// }
$("#submitButton").click(function () {
    let tr = $("[name='productTr']");
    let jsonArray = new Array();
    $.each(productList,function (i, v) {
        $.each($(tr),function (j,g){
            if(v.productId == $(g).children().eq(2).text()){
                let jsonVal = {
                    productId: v.productId,//产品编号
                    productName: v.productName,//产品名称
                    productDescribe: v.productDescribe,//描述
                    amount: $(g).children().eq(4).children().val(),//数量
                    amountUnit: v.amountUnit,//单位
                    costPrice: $(g).children().eq(6).text(),//单价
                    subtotal: $(g).children().eq(7).text(),//小计
                }
                jsonArray.push(jsonVal);
            }
        })

    });

    var SPayViewObj = {
        sPay:{
            storer:$("#storer").val(),//出库人
            reason:$("#reason").val(),//出库理由
            amountSum:$("#total").val(),//总件数
            costPriceSum:$("#sum").val(),//总金额
            remark:$("#comment").val(),//备注
            reasonexact:$("#reasonexact").val(),//出库详细理由
            register:$("#currentAdmin").val(),//登记人
            registerTime:$("#registerTime").val()//登记时间
        },
        sPayDetailsList:jsonArray,
    }
    $.ajax({
        type: "POST",
        url: "/hj/saveWarehouseRegistration.action",
        contentType: 'application/json;charset=utf-8',
        data: JSON.stringify(SPayViewObj),
        success: function (result) {
            commonUtil.message(3);
            setTimeout(function () {
                window.location.reload();
            },2500)
        }
    })
})


var array = new Array();
var temp = false;
$("#addProductOk").click(function () {
    let productClass = $(".productClass:checked").length;
    if (productClass > 0) {
        let productClass1 = $(".productClass:checked");
        $.each(productClass1, function (i, v) {
            let parent = $(v).parent().parent().parent();
            let id = parent.children().eq(0).children("div").children().val();
            if (array.indexOf(id) == -1) {
                array.push(id)
                temp = true;
                let tr = $("<tr name='productTr'></tr>")
                    .append("<td style=\"font-size: 1.4em\">" + id + "</td>")
                    .append("<td style=\"font-size: 1.4em\">" + parent.children().eq(2).text() + "</td>")
                    .append("<td style=\"font-size: 1.4em\">" + parent.children().eq(1).text() + "</td>")
                    .append("<td style=\"font-size: 1.4em\">"+parent.children().eq(6).text()+"</td>")
                    .append("<td style=\"font-size: 1.4em\"><input type=\"number\" class=\"form-control number tabEnter\" value='1' onchange='productQuantityChanges(this)'></td>")
                    .append("<td style=\"font-size: 1.4em\">"+parent.children().eq(4).text()+"</td>")
                    .append("<td style=\"font-size: 1.4em\">" + parent.children().eq(5).text() + "</td>")
                    .append("<td style='color: red;font-size: 1.4em'></td>")
                    .append("<td style=\"font-size: 1.4em\"><button style=\"height: 20px;width: 20px\" class='btn-danger btn-close deleteCurrentProduct' onclick='removeTargetProduct(this)'></button></td>");
                $("#tbody").append(tr);
            } else {
                temp = false;
            }
        })
        checkingQuantity()
        if (temp) {
            commonUtil.message(1)
        } else {
            commonUtil.message(2)
        }
    } else {
        commonUtil.message(2)
    }
})
$("#selectAllProducts").click(function () {
    if ($(this).prop("checked") == true) {
        $(".productClass").each(function () {
            $(this).prop('checked', true)
        })
    }
})

function removeTargetProduct(e) {
    let i = $(e).parent().parent().children().eq(0).text();
    array.splice(array.indexOf(i), 1);
    $(e).parent().parent().remove()
    checkingQuantity()
}

function productQuantityChanges(e) {
    if ($(e).val() <= 0) {
        $(e).val(1)
    }
}

var commonUtil = {
    /**
     * 弹出消息框
     * @param msg 消息内容
     * @param type 消息框类型（参考bootstrap的alert）
     */
    alert: function (msg, type) {
        if (typeof (type) == "undefined") { // 未传入type则默认为success类型的消息框
            type = "success";
        }
        // 创建bootstrap的alert元素
        if (msg == 1) {
            var divElement = $("<div style='width: 220px' class=\"alert alert-primary \"><svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"me-2\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8 14s1.5 2 4 2 4-2 4-2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line></svg><strong>OK!</strong> 添加产品成功.</div>\n")
        } else {
            var divElement = $("<div style='width: 320px' class=\"alert alert-light \">\n" +
                "    <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"me-2\"><polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line></svg>\n" +
                "    <strong>Error!</strong> 未选择产品或已添加过该产品..\n" +
                "    </button>\n" +
                "</div>")
        }
        let number = parseInt($(window).width()) / 2 - 120;
        let number1 = parseInt($(window).height()) / 2 - 180;
        divElement.css({ // 消息框的定位样式
            "position": "absolute",
            "left": number,
            "top": number1
        });
        //divElement.text(msg); // 设置消息框的内容
        // 消息框添加可以关闭按钮
        var closeBtn = $('<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true"><i class="bi bi-x"></i></span></button>');
        $(divElement).append(closeBtn);
        // 消息框放入到页面中
        $('body').append(divElement);
        return divElement;
    },

    success: function () {
        if (typeof (type) == "undefined") { // 未传入type则默认为success类型的消息框
            type = "success";
        }
        var divElement = $("<div class=\"col-xl-3\">\n" +
            "<div class=\"alert alert-success left-icon-big alert-dismissible fade show\">\n" +
            "<div class=\"media\">\n" +
            "<div class=\"alert-left-icon-big\">\n" +
            "    <span><i class=\"mdi mdi-check-circle-outline\"></i></span>\n" +
            "</div>\n" +
            "<div class=\"media-body\">\n" +
            "    <h5 class=\"mt-1 mb-2\">submittedSuccessfully!</h5>\n" +
            "</div>\n" +
            "</div>\n" +
            "</div>\n" +
            "</div>")
        let number = parseInt($(window).width()) / 2 - 120;
        let number1 = parseInt($(window).height()) / 2 - 180;
        divElement.css({ // 消息框的定位样式
            "position": "absolute",
            "left": number,
            "top": number1
        });
        //divElement.text(msg); // 设置消息框的内容
        // 消息框添加可以关闭按钮

        // 消息框放入到页面中
        $('body'
        ).append(divElement);
        return divElement;
    },


    /**
     * 短暂显示后上浮消失的消息框
     * @param msg 消息内容
     * @param type 消息框类型
     */
    message: function (msg, type) {
        if (msg == 1 || msg == 2) {
            var divElement = commonUtil.alert(msg, type); // 生成Alert消息框
        } else {
            var divElement = commonUtil.success()
        }
        var isIn = false; // 鼠标是否在消息框中

        divElement.on({ // 在setTimeout执行之前先判定鼠标是否在消息框中
            mouseover: function () {
                isIn = true;
            },
            mouseout: function () {
                isIn = false;
            }
        });

        // 短暂延时后上浮消失
        setTimeout(function () {
            var IntervalMS = 20; // 每次上浮的间隔毫秒
            var floatSpace = 60; // 上浮的空间(px)
            var nowTop = divElement.offset().top; // 获取元素当前的top值
            var stopTop = nowTop - floatSpace;    // 上浮停止时的top值
            divElement.fadeOut(IntervalMS * floatSpace); // 设置元素淡出

            var upFloat = setInterval(function () { // 开始上浮
                if (nowTop >= stopTop) { // 判断当前消息框top是否还在可上升的范围内
                    divElement.css({"top": nowTop--}); // 消息框的top上升1px
                } else {
                    clearInterval(upFloat); // 关闭上浮
                    divElement.remove();    // 移除元素
                }
            }, IntervalMS);

            if (isIn) { // 如果鼠标在setTimeout之前已经放在的消息框中，则停止上浮
                clearInterval(upFloat);
                divElement.stop();
            }

            divElement.hover(function () { // 鼠标悬浮时停止上浮和淡出效果，过后恢复
                clearInterval(upFloat);
                divElement.stop();
            }, function () {
                divElement.fadeOut(IntervalMS * (nowTop - stopTop)); // 这里设置元素淡出的时间应该为：间隔毫秒*剩余可以上浮空间
                upFloat = setInterval(function () { // 继续上浮
                    if (nowTop >= stopTop) {
                        divElement.css({"top": nowTop--});
                    } else {
                        clearInterval(upFloat); // 关闭上浮
                        divElement.remove();    // 移除元素
                    }
                }, IntervalMS);
            });
        }, 1500);
    }
}

